INNER JOIN - operacja

ú╣czy (scala) rekordy z dw≤ch tabel, je£li wsp≤lne pole zawiera odpowiadaj╣ce sobie warto£ci.

Sk│adnia

FROM tabela_1 INNER JOIN tabela_2 ON tabela_1.pole_1 op_por tabela_2.pole_2

Sk│adnia operacji INNER JOIN zawiera nastΩpuj╣ce elementy:

Element Opis
tabela_1, tabela_2 Nazwy tabel, kt≤rych rekordy s╣ │╣czone (scalane).
pole_1, pole_2 Nazwy p≤l sprzΩgaj╣cych. Je£li nie s╣ one typu numerycznego, pola musz╣ byµ tego samego typu danych i zawieraµ ten sam rodzaj danych, ale nie musz╣ mieµ tej samej nazwy.
op_por Dowolny operator por≤wnania: "=", "<", ">", "<=", ">=" lub "<>".

Uwagi

Operacja INNER JOIN mo┐e byµ u┐yta w dowolnej klauzuli FROM. Jest to najczΩ£ciej wystΩpuj╣cy typ sprzΩ┐enia. SprzΩ┐enia wewnΩtrzne │╣cz╣ rekordy z dw≤ch tabel, je£li w polu wsp≤lnym dla obu tabel znajduj╣ siΩ odpowiadaj╣ce sobie warto£ci.

Operacja INNER JOIN zastosowana do tabel Dzia│y i Pracownicy mo┐e zostaµ u┐yta do wyboru wszystkich pracownik≤w zatrudnionych w ka┐dym dziale. Je£li jednak chcemy wybraµ wszystkie dzia│y (nawet je£li w niekt≤rych z nich nie ma pracownik≤w) lub wszystkich pracownik≤w (nawet je£li niekt≤rzy z nich nie pracuj╣ w ┐adnym dziale), to musimy u┐yµ operacji LEFT JOIN lub RIGHT JOIN do utworzenia sprzΩ┐enia zewnΩtrznego.

Podczas pr≤by sprzΩgania p≤l zawieraj╣cych dane typu Memo lub obiekt OLE wystΩpuje b│╣d.

Mo┐na sprz╣c dwa pola numeryczne podobnych typ≤w. Na przyk│ad, mo┐na sprz╣c pola Autonumer i Long, poniewa┐ s╣ one podobnych typ≤w. Nie mo┐na natomiast sprz╣c p≤l typu Single i Double.

Przyk│ad przedstawiony poni┐ej pokazuje, w jaki spos≤b mo┐na sprz╣c tabele Kategorie i Produkty wed│ug pola NrKategorii.

SELECT NazwaKategorii, NazwaProduktu

FROM Kategorie INNER JOIN Produkty

ON Kategorie.NrKategorii = Produkty.NrKategorii;

W poprzednim przyk│adzie NrKategorii jest polem sprzΩ┐onym, ale nie jest ono uwzglΩdnione w wyniku kwerendy, poniewa┐ nie jest zawarte w instrukcji SELECT. Aby do│╣czyµ pole sprzΩgaj╣ce, nale┐y dodaµ nazwΩ pola do instrukcji SELECT ù w tym przypadku Kategorie.NrKategorii.

W jednej instrukcji JOIN mo┐na umie£ciµ wiele klauzul ON, u┐ywaj╣c nastΩpuj╣cej sk│adni:

SELECT pola
FROM tabela_1 INNER JOIN tabela_2
ON tabela_1.pole_1 op_por tabela_2.pole_1 AND
ON tabela_1.pole_2 op_por tabela_2.pole_2) OR
ON tabela_1.pole_3 op_por tabela_2.pole_3)];

Mo┐na r≤wnie┐ zagnie┐d┐aµ instrukcje JOIN, u┐ywaj╣c nastΩpuj╣cej sk│adni:

SELECT pola
FROM tabela_1 INNER JOIN
(tabela_2 INNER JOIN [( ] tabela_3
[INNER JOIN [( ] tabela_x [INNER JOIN ...)]
ON tabela_3.pole_3 op_por tabela_x.pole_x)]
ON tabela_2. pole_2 op_por tabela_3.pole_3
ON tabela_1. pole_1 op_por tabela_2.pole_2;

Operacje LEFT JOIN i RIGHT JOIN mog╣ byµ zagnie┐d┐one wewn╣trz operacji INNER JOIN, lecz operacja INNER JOIN nie mo┐e byµ zagnie┐d┐ona wewn╣trz operacji LEFT JOIN lub RIGHT JOIN.

Zobacz te┐
FROM û klauzula (Microsoft Jet SQL) TRANSFORM û instrukcja (Microsoft Jet SQL)
LEFT JOIN, RIGHT JOIN û operacje (Microsoft Jet SQL) UNION û operacja (Microsoft Jet SQL)
SELECT - instrukcja (Microsoft Jet SQL)  

Przyk│ad

INNER JOIN û przyk│ad operacji